Phase 2 的收尾。到这你已经拆遍了一台路由器的每个子系统。这最后一章讲那些听起来很"高级"的功能——VLAN 隔离、DNS 分流、策略路由、透明代理。但这章真正想让你看到的是:它们没有一个是新东西。每一个"高级功能",都只是把你 Phase 0/1/2 学过的原语(VLAN、ip rule、fwmark、隧道、dnsmasq、防火墙区域)按不同方式拼起来。看懂这点,你就不会再被任何"路由器高级玩法"唬住——你会本能地把它拆回熟悉的积木。
路由器的"高级功能",本质是已有原语的组合配方:VLAN 隔离 = VLAN + 多网段 + 多区域;策略路由 = ip rule + fwmark;透明代理 = 打标 + 策略路由 + 本地处理程序。没有新机制,只有新组合。
1没有"高级"魔法:都是组合
先给你一张解构地图,后面逐个展开——每个"高级功能"能拆成的积木:
- VLAN 隔离(LAN/Guest/IoT 互不干扰)= VLAN 子接口1.1 + 多个 network2.2 + 多个防火墙区域2.4
- DNS 分流(不同域名走不同 DNS)= dnsmasq 按域名指定上游2.3
- 策略路由(不同流量走不同线路/隧道)= ip rule + 路由表1.2 + fwmark 打标1.3
- 透明代理= nftables 打标1.3 + ip rule 分流1.2 + 一个本地代理进程 +(常配)隧道1.6
为什么值得这样看:市面上一堆"一键脚本""魔法插件"把这些包装得像黑盒。但当你知道底下就是 VLAN、ip rule、fwmark、dnsmasq 这几样,你就能调试(哪一层出了问题)、定制(不依赖别人的脚本)、迁移(换个系统照样搭)。这正是这整门课的目的——不做黑盒的使用者,做看得穿的建造者。
Phase 0 你看懂数据包(概念),Phase 1 你手搓内核能力(机制),Phase 2 你看 OpenWRT 怎么组织(系统)。到这章,你把这三层合起来,自己解构任意"高级功能"——这就是"从零到路由器"想带你到的地方。
2VLAN 隔离:多网段 + 多区域
把 LAN、访客、IoT 隔离成互不可见的网段,就是三层叠加,全是学过的:
- VLAN(1.1):给每个隔离网段一个 VLAN 子接口(如
eth0.20= IoT); - network(2.2):每个 VLAN 一个 OpenWRT interface(iot 接口,静态 IP 如 192.168.20.1/24),各自的 dnsmasq DHCP 段发地址(2.3);
- zone(2.4):每个网段一个防火墙区域(iot 区域),设区域间转发——允许
iot → wan(能上网)、禁止iot → lan(碰不到主设备)。
于是:IoT 设备在自己的 VLAN、网段、区域里,能上网但看不到你的 NAS 和电脑。访客网、儿童网同理——这就是 2.5 那个访客 WiFi 练习的完整版,把无线换成/加上 VLAN,让有线也隔离。
还记得 2.5 那条"wifi-iface → network → zone → dnsmasq"的合流?VLAN 隔离就是把它复制几份、每份配上 VLAN,再用区域间转发策略切断彼此。安全的核心那句 "forward 到 lan = REJECT"(2.4)在这里是关键——它才是"隔离"真正生效的地方,不是 VLAN 本身(VLAN 只是分开二层,真正的访问控制靠区域策略)。
3DNS 分流:按域名分上游
回想 2.3:dnsmasq 是 DNS 转发器,答不了的转给上游。DNS 分流就是"按域名选不同上游":
server=/cn/223.5.5.5 # .cn 域名走这个上游
server=/example.com/8.8.8.8 # example.com 走这个上游
server=114.114.114.114 # 其余默认上游
为什么要分:不同 DNS 对不同区域的解析质量差别很大(国内 CDN 用国内 DNS 能解析出更近的节点)。分流让每个域名走"最懂它"的 DNS。但光解析对了还不够——解析出的那个 IP 的流量,也可能需要走特定线路(下一节)。DNS 分流管"域名 → 哪个 IP",策略路由管"这个 IP 的流量走哪条线",两者配合才完整。
你见过的各种"智能 DNS""分流",一半就是这层 dnsmasq 按域名分上游——它只解决"查到对的地址";另一半"流量走对的线路"靠下一节的策略路由。看清这个分工,你就看穿了大多数分流方案的结构。
4策略路由与透明代理
让"某类流量走特定线路 / 隧道 / 代理",统一靠这套三件套——1.2 + 1.3 + 1.6 的合体,前面反复预告的那个:
mark 0x1
mark→table 100
→ wg0 / 代理
三步:nftables 给要特殊处理的流量打标(fwmark,1.3 的 meta mark set)→ ip rule 让带这个 mark 的包查一张专用路由表(1.2 的 ip rule add fwmark 0x1 table 100)→ 那张表把流量导向目标(送进 WireGuard 隧道 wg0,或送给本机代理端口)。这就是多 WAN 分流、VPN 分流的统一骨架;tc 还能顺带按同一个 mark 限速(1.5)——几章的伏笔在这里全兑现。
透明代理是把上面用到极致:"透明"指设备无感——它们不知道流量被拐了个弯。机制是在路由器上跑一个本地代理进程(监听某端口),用 nftables 把需要代理的流量重定向(redirect / TPROXY)到这个本地端口,设备发出的包被路由器"截"下、交给代理,而设备毫不知情;代理处理后(常再经隧道 1.6 发往远端),回程同样被透明还原。透明代理 = nftables 截流打标(1.3)+ ip rule/TPROXY 分流(1.2)+ 一个本地代理进程 +(通常)一条出境隧道(1.6)——没有任何新原语,全是排列组合。
你用过的那类在路由器上做透明代理 / 分流的工具,打开看它生成的东西,就是这套:一堆 nftables 规则打标 + ip rule 选表 + 一个代理进程 + 上游隧道。它们把配置包装成 UI,底层还是 1.2/1.3/1.6。这套"截流 → 打标 → 交本地程序处理"是通用网络工程手段——企业也用它做安全审计代理、缓存代理、流量镜像。理解了机制,你不仅会用,还能自己搭、能调试(某流量没走代理 → 查是打标漏了、ip rule 没匹配、还是路由表没配)。具体在你所在网络怎么用、遵守哪些规定,由你判断和负责。
本章小结
- 路由器的"高级功能"= 已学原语的组合,无新机制:认出组成的积木,就能调试 / 定制 / 迁移。
- VLAN 隔离 = VLAN 子接口(1.1)+ 多 network(2.2)+ 多区域(2.4)+ 切断区域间 forward(2.4);2.5 访客网的完整版。
- DNS 分流 = dnsmasq 按域名分上游(2.3);管"域名 → 哪个 IP",与策略路由(管"IP 走哪条线")配合才完整。
- 策略路由 / 透明代理 = nftables 打标(1.3)→ ip rule 选表(1.2)→ 路由表导向隧道 / 代理(1.6);tc 还能顺带限速(1.5)。透明代理再加一个本地代理进程。
- Phase 2 完结:OpenWRT 不再是黑盒;Phase 3 从零自造一台路由器。
你从"路由器跑了哪些进程"(2.1)一路拆到 UCI 架构(2.2)、DHCP/DNS(2.3)、防火墙(2.4)、WiFi(2.5)、WAN 接入(2.6),再到这章把它们和 Phase 1 的内核原语拧成高级功能。现在,一台 OpenWRT 路由器对你不再是黑盒——它的每个进程、每份配置、每条规则,你都能对到底层的机制和概念。Phase 3 是最后一跃:不再是拆别人的路由器,而是自己从零造一个——把这一路学的全部,变成你亲手搭起的一台路由器系统。
动手练习
- 解构练习:挑一个你听过的"路由器高级功能"(旁路由、去广告、游戏加速),把它拆成本课学过的原语(哪几层?VLAN?ip rule?fwmark?dnsmasq?),写出组成清单。
- 若有 OpenWRT + 想隔离 IoT:按 §2 配方搭一个 IoT VLAN(VLAN 子接口 + iot 网络 + iot 区域 + 禁止 forward 到 lan),用一台设备验证它能上网但 ping 不到你的主设备。
- 思考题:DNS 分流和策略路由,各解决"分流"的哪一半?为什么只做 DNS 分流、不做策略路由,某些场景仍然不通?(DNS 管解析到哪个 IP;策略路由管那个 IP 的流量走哪条线;两者缺一。)
- 进阶:画出透明代理完整数据流——设备发包 → nftables 打标 / 重定向(1.3)→ ip rule 选表(1.2)→ 送本地代理端口 → 代理经隧道出境(1.6)→ 回程透明还原。标出每步用的是前面哪一章的原语。